#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "expressions.h"
#include "outils.h"
#include "labels.h"

/*
                Description de la fonction
                ==========================
                rechercher un label.
                Renvoi NULL si le label  n est pas retrouve
*/
Un_label *rechercher_label(Un_prog *pprog, char* nom){
        Un_label *v= pprog->plabel;

        while(v!=NULL){
                if(strcmp(v->nom_label,nom)==0)
                        return v;
                v = v->suiv;
        }
        return NULL;
}

        /*
                Description de la fonction
                ==========================
                ajoute un label dans pprog
        */
Un_label* ajouter_label(Un_prog *pprog,char* nom,Une_inst* pinst){

        Un_label* nouveau = (Un_label*) allouer(sizeof(Un_label)) ,
        *premier = pprog->plabel ;

        // initialisation du nouveau maillon

        nouveau->nom_label = dupliquer(nom);
        nouveau->pinst =pinst;
        nouveau->suiv = NULL;

        // retourne le nouveau maillon si la liste est vide

        if(premier==NULL){
                premier = nouveau;
                return premier;
        }
        while(premier->suiv!=NULL){
                premier = premier->suiv ;
        }
        premier->suiv = nouveau;
        return pprog->plabel ;
}
